﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain;

namespace Data.Repositories
{
    public class PontosRepository
    {
        public enum TipoPonto
        {
            Pergunta,Resposta,Comentario,PerguntaVotoPositivo,RespostaVotoPositivo,PerguntaVotoNegativo,RespostaVotoNegativo,RespostaCorrecta
        }

        public Ponto Createponto(TipoPonto tipo)
        {
            Ponto p = new Ponto();
            
            switch (tipo)
            {
                case TipoPonto.Pergunta:
                    p.Perguntas += 5;
                    break;
                case TipoPonto.Resposta:
                    p.Respostas += 2;
                    break;
                case TipoPonto.Comentario:
                    p.Comentarios += 1;
                    break;
                case TipoPonto.PerguntaVotoPositivo:
                    p.PerguntaVotopositivo += 5;
                    break;
                case TipoPonto.RespostaVotoPositivo:
                    p.RespostaVotoPositivo += 5;
                    break;
                case TipoPonto.PerguntaVotoNegativo:
                    p.PerguntaVotopositivo -= 2;
                    break;
                case TipoPonto.RespostaVotoNegativo:
                    p.RespostaVotoPositivo -= 2;
                    break;
                case TipoPonto.RespostaCorrecta:
                    p.RespostaVotoPositivo += 10;
                    break;
                default:
                    break;
            }
            p.Total = p.Perguntas + p.Respostas + p.Comentarios + p.PerguntaVotopositivo + p.RespostaVotoPositivo + p.RespostaCorrecta;
            p.DataAct = DateTime.Now;
            return p;
        }

        public Ponto UpdatePonto(TipoPonto tipo, Ponto p)
        {
            switch (tipo)
            {
                case TipoPonto.Pergunta:
                    p.Perguntas += 5;
                    break;
                case TipoPonto.Resposta:
                    p.Respostas += 2;
                    break;
                case TipoPonto.Comentario:
                    p.Comentarios += 1;
                    break;
                case TipoPonto.PerguntaVotoPositivo:
                    p.PerguntaVotopositivo += 5;
                    break;
                case TipoPonto.RespostaVotoPositivo:
                    p.RespostaVotoPositivo += 5;
                    break;
                case TipoPonto.PerguntaVotoNegativo:
                    p.PerguntaVotopositivo -= 2;
                    break;
                case TipoPonto.RespostaVotoNegativo:
                    p.RespostaVotoPositivo -= 2;
                    break;
                case TipoPonto.RespostaCorrecta:
                    p.RespostaVotoPositivo += 10;
                    break;
                default:
                    break;
            }
            p.Total = p.Perguntas+p.Respostas+p.Comentarios+p.PerguntaVotopositivo+p.RespostaVotoPositivo+p.RespostaCorrecta;
            p.DataAct = DateTime.Now;
            return p;
        }
    }
}
